///*
// * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
// *
// * https://www.gz-yami.com/
// *
// * 未经允许，不可做商业用途！
// *
// * 版权所有，侵权必究！
// */
//
//package cn.stylefeng.qz.core.util;
//
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.util.CollectionUtils;
//
//import java.util.concurrent.TimeUnit;
//
//public class RedisUtil {
//    private static RedisTemplate<String,Object> redisTemplate = SpringContextUtils.getBean("redisTemplate",RedisTemplate.class);
//
//    //=============================common============================
//    /**
//     * 指定缓存失效时间
//     * @param key 键
//     * @param time 时间(秒)
//     * @return
//     */
//    public static boolean expire(String key,long time){
//        try {
//            if(time>0){
//                redisTemplate.expire(key, time, TimeUnit.SECONDS);
//            }
//            return true;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//    }
//
//    /**
//     * 根据key 获取过期时间
//     * @param key 键 不能为null
//     * @return 时间(秒) 返回0代表为永久有效 失效时间为负数，说明该主键未设置失效时间（失效时间默认为-1）
//     */
//    public static long getExpire(String key){
//        return redisTemplate.getExpire(key,TimeUnit.SECONDS);
//    }
//
//    /**
//     * 判断key是否存在
//     * @param key 键
//     * @return true 存在 false 不存在
//     */
//    public static boolean hasKey(String key){
//        try {
//            return redisTemplate.hasKey(key);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//    }
//
//    /**
//     * 删除缓存
//     * @param key 可以传一个值 或多个
//     */
//    @SuppressWarnings("unchecked")
//    public static void del(String ... key){
//        if(key!=null&&key.length>0){
//            if(key.length==1){
//                redisTemplate.delete(key[0]);
//            }else{
//                redisTemplate.delete(CollectionUtils.arrayToList(key));
//            }
//        }
//    }
//
//    //============================String=============================
//    /**
//     * 普通缓存获取
//     * @param key 键
//     * @return 值
//     */
//    @SuppressWarnings("unchecked")
//    public static <T> T get(String key){
//        return key==null?null:(T)redisTemplate.opsForValue().get(key);
//    }
//
//    /**
//     * 普通缓存放入
//     * @param key 键
//     * @param value 值
//     * @return true成功 false失败
//     */
//    public static boolean set(String key,Object value) {
//        try {
//            redisTemplate.opsForValue().set(key, value);
//            return true;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//
//    }
//
//    /**
//     * 普通缓存放入并设置时间
//     * @param key 键
//     * @param value 值
//     * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
//     * @return true成功 false 失败
//     */
//    public static boolean set(String key,Object value,long time){
//        try {
//            if(time>0){
//                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
//            }else{
//                set(key, value);
//            }
//            return true;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//    }
//
//    /**
//     * 递增 此时value值必须为int类型 否则报错
//     * @param key 键
//     * @param delta 要增加几(大于0)
//     * @return
//     */
//    public static long incr(String key, long delta){
//        if(delta<0){
//            throw new RuntimeException("递增因子必须大于0");
//        }
//        return redisTemplate.opsForValue().increment(key, delta);
//    }
//
//    /**
//     * 递减
//     * @param key 键
//     * @param delta 要减少几(小于0)
//     * @return
//     */
//    public static long decr(String key, long delta){
//        if(delta<0){
//            throw new RuntimeException("递减因子必须大于0");
//        }
//        return redisTemplate.opsForValue().increment(key, -delta);
//    }
//}